class Solution {//leetcode152——乘积最大子数组
public:
    int maxProduct(vector<int>& nums) {
        int n=nums.size();
        vector<int> f(n+1,1);//f[i]，以i为结尾的最大乘积子数组
        vector<int> g(n+1,1);//g[i],以i为结尾的最小乘积的子数组
        int ret=INT_MIN;
        for(int i=1;i<n+1;i++){
            if(nums[i-1]>=0){
                f[i]=max(f[i-1]*nums[i-1],nums[i-1]);
                g[i]=min(g[i-1]*nums[i-1],nums[i-1]);
            }
            if(nums[i-1]<0){
                f[i]=max(g[i-1]*nums[i-1],nums[i-1]);
                g[i]=min(f[i-1]*nums[i-1],nums[i-1]);
            }
            ret=max(ret,f[i]);
        }
        return ret;
    }
};